/**
 * Created with IntelliJ IDEA.
 * Description: 牛客网: BM84 最长公共前缀
 * <a href="https://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47?tpId=295&tqId=732&ru=/exam/company&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Fcompany">...</a>
 * User: DELL
 * Date: 2023-06-24
 * Time: 23:27
 */
public class Solution {
    /**
     * 解题思路:
     * 本题最容易想到的做法就是分别遍历每一个字符串的第i个字符,看是否相等,
     * 遇到不等的时候即找到了最大前缀.以下解法就是这.
     * 但是我们也可能会想到的就是先拿第一个字符串和第二个字符串求一个最大前缀,
     * 只有拿着求出的最大前缀和第三个求最大前缀.但是经过认真思考后就会发现该方法
     * 其实并没有降低时间,反而时间性能可能比前面的思路更差,因此这里使用上面的解法.
     * @param strs
     * @return
     */
    public String longestCommonPrefix (String[] strs) {
        //判空处理
        if (strs.length == 0) {
            return new String();
        }
        StringBuffer stringBuffer = new StringBuffer();
        //先找出最短字符串的长度
        int minLen = 5000;
        for (int i = 0; i < strs.length; i++) {
            minLen = Math.min(minLen,strs[i].length());
        }
        //遍历
        for (int i = 0; i < minLen; i++) {
            char ch = strs[0].charAt(i);
            for (int j = 1; j < strs.length; j++) {
                if (ch != strs[j].charAt(i)) {
                    return stringBuffer.toString();
                }
            }
            stringBuffer.append(ch);
        }
        return stringBuffer.toString();
    }
}